import axios from "axios";
import router from "../router";
const request = axios.create({
  baseURL: '/api',
  timeout: 5000
})

// 当我们发起http请求的时候需要添加拦截器
request.interceptors.request.use(config =>{
  // 在请求头部里面 添加http请求的内容类型为  :json ,字符集为 UTF-8格式
  config.headers['Content-Type'] = "application/json;charset=UTF-8";
  // 在请求头部里面 添加http请求的认证标识,  必须要带上token标识,这个token标识相当于你已经登陆
  /**
   * 这个token  就是说我们登陆成功了,那么就可以跳转到DashBook页面
   * LocalStorage.get(LOCAL_KEY_XINGUAN_ACCESS_TOKEN) 从本地存储空间里面获取token
   */
  config.headers.Authorization = LocalStorage.get(LOCAL_KEY_XINGUAN_ACCESS_TOKEN)
    return config;
},error =>{
  console.log("请求拦截器报错:"+error)
  return Promise.reject(error)
})
//请求完成之后,从后台获取返回结果集,需要对应返回结果集进行处理,response响应拦截器
request.interceptors.response.use(response =>{
  let res = response.data //  获取后台返回结果集
  if(response.config.responseType === 'blob'){ // 返回的类容类型为   文件:excel文件,pdf文件
      return res;
  }
  if(typeof res === 'string'){   //  将字符串转换成json 对象
    res = res ?JSON.parse(res):res
  }
  if(res.success) return response;
  if(res.data !=null && res.data.errorCode === 50001){  // 后台代码报错,我们需要重新登录
    LocalStorage.clearAll() // 清空本地储存控件里面的值
    return router.push('/login')  // 重新登录
  }
  return response;
},error => {
  console.log("系统错误:"+error)
  return Promise.reject(error)
})

// 导出 request 对象成为全局的变量名,在其他文件就可以使用

export default  request;
